package model

import (
	"wms/pkg/database"
	"wms/pkg/logger"

	"go.uber.org/zap"
)

// AutoMigrate 自动迁移数据库
func AutoMigrate() error {
	db := database.GetDB()

	// 自动迁移数据库表结构
	err := db.AutoMigrate(
		&User{},            // 用户
		&Role{},            // 角色
		&Menu{},            // 菜单
		&RoleMenu{},        // 角色菜单关联
		&Cargo{},           // 货物
		&CargoCategory{},   // 货物分类
		&Supplier{},        // 供应商
		&Inventory{},       // 库存
		&InventoryLog{},    // 库存日志
		&InventoryBatch{},  // 库存批次
		&Warehouse{},       // 仓库
		&Location{},        // 货位
		&InboundOrder{},     // 入库单
		&InboundOrderItem{}, // 入库单明细
		&OutboundOrder{},    // 出库单
		&OutboundOrderItem{},// 出库单明细
		&Customer{},         // 客户
		&OperationLog{},     // 操作日志
		&Unit{},             // 单位
		&LogisticsCompany{},// 物流公司
	)

	if err != nil {
		logger.Error("数据库迁移失败", zap.Error(err))
		return err
	}

	logger.Info("数据库迁移成功")
	return nil
}
